package cn.com.w.common.Utils;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

/**
 * @author w
 * @Description:
 * @DateTime: 2025 05 08 08:40
 **/
public final class LogUtils {

    // 私有构造器，防止实例化
    private LogUtils() {}

    // 获取指定类的日志记录器
    public static Logger getLogger(Class<?> clazz) {
        return LogManager.getLogger(clazz);
    }

    // 可选：提供更简洁的方法，自动获取调用者的类
    public static Logger getLogger() {
        return LogManager.getLogger(getCallerClass());
    }

    // 使用堆栈获取调用者类（性能略低，调试时可用）
    private static Class<?> getCallerClass() {
        StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
        for (int i = 2; i < stackTrace.length; i++) {
            StackTraceElement element = stackTrace[i];
            try {
                Class<?> clazz = Class.forName(element.getClassName());
                if (!clazz.equals(LogUtils.class)) {
                    return clazz;
                }
            } catch (ClassNotFoundException ignored) {}
        }
        return LogUtils.class;
    }
}